﻿namespace SSC.BaseClass
{
    /// <summary>
    /// PLC地址类：集中定义项目中所有PLC地址常量和槽位地址计算逻辑
    /// </summary>
    public static class PlcAddress
    {
        // 下料标志地址（用于判断是否需要记录产品）
        public const string UnloadFlag = "D550";

        // 槽位 Pcode 地址段：D501~D530，每个槽位占一个地址位
        public const string SlotPcodeStart = "D501";
        public const int SlotPcodeCount = 30;

        /// <summary>
        /// 获取指定槽号的 Pcode 地址（假设槽位从 1 开始编号，对应 D501 起）
        /// </summary>
        public static string GetSlotPcodeAddress(int slotNumber)
        {
            if (slotNumber < 1 || slotNumber > SlotPcodeCount)
                throw new ArgumentOutOfRangeException(nameof(slotNumber), $"槽号必须在1~{SlotPcodeCount}之间");

            int baseAddr = int.Parse(SlotPcodeStart.Substring(1)); // 去掉'D'
            return $"D{baseAddr + slotNumber - 1}";
        }

        //获取槽号对应的上料Pcode地址
        public static string GetPcodeAddress(int slotNumber)
        {
            // 示例：每个槽占用20字节，从D100开始
            int baseAddress = 100 + (slotNumber - 1) * 20;
            return $"D{baseAddress}";
        }
    }
}
